<?php
include $_SERVER['DOCUMENT_ROOT'] . '/sql/connection.php';

/* выводит список имен элементов таблицы */
function listOf($table, $class, $id, $count, $script) {
    echo '<select class="' . $class . '" id="' . $id . '" size="' . $count . 
            '" onchange="' . $script . '" name="' . $id . '">';
    $res = execute_query('SELECT * FROM ' . $table . ' ;');
    while ($row = mysql_fetch_array($res)) {
        $item_name = $row['name'];
        $item_id = $row['id'];
        echo '<option value="' . $item_id . '">' . $item_name . '</option>';
    }
    echo "</select>";
}

/* Функция для генерации случайной строки */
function generateCode($length = 6) {
    $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPRQSTUVWXYZ0123456789';
    $code = '';
    $clen = strlen($chars) - 1;
    while (strlen($code) < $length) {
        $code .= $chars[mt_rand(0, $clen)];
    }
    return $code;
}

/* Функция для проверки включены ли куки в браузере клиента */
function isCookieOn() {
    if (!isset($_GET['probe'])) {
        if (setcookie("test", "set"))
            header("Location: $_SERVER[PHP_SELF] ?probe=set");
    }
    else {
        return isset($_COOKIE['test']);
    }
}

/* проверяет доступ пользователя к странице */
function checkUserAccess() {
    $retn = false;
    $id = $_COOKIE['plugs_ru_user_id'];
    $hash = $_COOKIE['plugs_ru_user_hash'];
    if (isset($id) and isset($hash)) {
        $res = execute_query("SELECT hash 
		FROM users WHERE id='" . mysql_real_escape_string($id) . "';");

        if (mysql_num_rows($res) != 0) {
            $row = mysql_fetch_array($res);
            if ($hash == $row['hash'])
                $retn = true;
        }
    }
    return $retn;
}

/* выводит страничку "Доступ закрыт!" */
function accessDenied() {
    ?>
    <!DOCTYPE html>
    <html>
        <head>
            <title>Plugs.ru - Админка</title>
            <meta charset="utf-8">
            <link rel="stylesheet" type="text/css" href="../styles/admin_style.css" />
        </head>
        <body>
            <h1 align="center">Доступ закрыт!</h1>
        </body>
    </html>
    <?php
}

/* Переход на страницу с путем $path */
function goToPage($path) {
    header('Location: ' . $path);
    exit();
}

/* Валидация картинки
 * params: file - проверяемый файл
 * return: string - текст ошибки */
function checkImage($file) 
{
    /* тут загрузка и обработка картинки должна быть */
    list($w_i, $h_i, $type) = getimagesize($file);
    $types = array('','gif','jpeg','png');
    $ext = $types[$type];
    if (!$ext) 
    {
        return 'Некорректный формат файла. Допустимые форматы: gif, jpeg, png';
    }
    
    return NULL;
}

/* Масштабирование картинки 
 * return: string - текст ошибки */
function resize($file_input, $file_output, $w_o, $h_o, $percent = false) 
{
    list($w_i, $h_i, $type) = getimagesize($file_input);
    if (!$w_i || !$h_i) 
    {
        return 'Невозможно получить длину и ширину изображения';
    }
    
    $types = array('','gif','jpeg','png');
    $ext = $types[$type];
    if ($ext) 
    {
        $func = 'imagecreatefrom'.$ext;
        $img = $func($file_input);
    } 
    else 
    {
        return 'Некорректный формат файла. Допустимые форматы: gif, jpeg, png';
    }

    if ($percent) 
    {
        $w_o *= $w_i / 100;
        $h_o *= $h_i / 100;
    }
    if (!$h_o) $h_o = $w_o / ($w_i/$h_i);
    if (!$w_o) $w_o = $h_o / ($h_i/$w_i);

    $img_o = imagecreatetruecolor($w_o, $h_o);
    imagecopyresampled($img_o, $img, 0, 0, 0, 0, $w_o, $h_o, $w_i, $h_i);
    if ($type == 2) 
    {
        if (!imagejpeg($img_o,$file_output,100))
            return 'Не удалось создать картинку';
    } 
    else 
    {
        $func = 'image'.$ext;
        if (!$func($img_o,$file_output))
            return 'Не удалось создать картинку';
    }
}

// Для работы с .png
function resize2($file_input, $file_output, $w_o, $h_o, $percent = false)
{
    // Узнаём информацию об изображении
    list($w_i, $h_i, $type) = getimagesize($file_input);
    
    // Если не .png вызываем обычную функцию resize
    if ($type != 3)
        return resize($file_input, $file_output, $w_o, $h_o, $percent);
    
    if ($percent) 
    {
        $w_o *= $w_i / 100;
        $h_o *= $h_i / 100;
    }
    if (!$h_o) $h_o = $w_o / ($w_i/$h_i);
    if (!$w_o) $w_o = $h_o / ($h_i/$w_i);
    
    // Создаём ресурс из исходного изображения - в формает png 24
    $res = imageCreateFromPng($file_input);

    /**
    *  Создаём новый ресурс с нужной шириной и высотой,
    *   в который запишем исходный ресурс,
    *   заметим, что изображение полноцветное - imageCreateTrueColor
    */
    $tmp = imageCreateTrueColor($w_o, $h_o);

    /**
     Перед тем как произодить опрерации с новым ресурсом,
     установим некоторые опции
     imageAlphaBlending - устанавливает режим смешивания(режим
     смешивания недоступен для изображений с палитрой)
     по умолчанию для truecolor изображений - true, для изображений
     с палитрой - false
     true/false - включен/выключен

            true - при накладывании одного изображения на другое
            цвета пикселей нижележащего и накладываемого изображения смешиваются,
            параметры смешивания определяются прозрачностью пикселя.

            false - накладываемый пиксель заменяет исходный
    */
    imageAlphaBlending($tmp, false);
    /*
    ImageSaveAlpha
    Сохранять или не сохранять информацию о прозрачности
    по умолчанию - false, а надо true
    */
    imageSaveAlpha($tmp, true);

    /*
    Всё, теперь прозрачность должна сохранятся
    */

    /*
    копируем исходное изображение с новое, в новый ресурс
    */
    imageCopyResampled($tmp, $res, 0, 0, 0, 0, $w_o, $h_o, $w_i, $h_i);

    // Выводим изображение в буффер
    imagePng($tmp, $file_output);
}

/* Вставка картинки в таблицу картинок
 * return: int - идентификатор вставленной картинки */
function insertImage($path_big, $path_small)
{
    /* заполняем таблицу картинок */
    execute_query("INSERT INTO `images` (`path_small`, `path_big`) VALUES ('" 
            . mysql_real_escape_string($path_small) . "','" 
            . mysql_real_escape_string($path_big)   . "');");
    
    if (mysql_affected_rows() == 0)
        return NULL;
    
   $res = execute_query("SELECT id FROM images WHERE path_big ='" 
           . mysql_real_escape_string($path_big) . "';");
   
    if (mysql_num_rows($res) <= 0) 
        return NULL;
    
    $row = mysql_fetch_array($res);
    if ($row['id'] == 0)
        return NULL;
    
    return $row['id'];
}
?>
